
WKSPCDIR=$(HOME)/Dropbox/workspace/programas/C
CLQRDIR=$(WKSPCDIR)/cliquer-1.21
RDMXCQDIR=$(WKSPCDIR)/rdmaxclique
SRCDIR=${RDMXCQDIR}/src/unweighted
SRC1DIR=${RDMXCQDIR}/src/unweighted1
WSRCDIR=${RDMXCQDIR}/src/weighted
CSRCDIR=${RDMXCQDIR}/src/cliquer/unweighted
GPHDIR=${RDMXCQDIR}/src/graph
DTSDIR=${RDMXCQDIR}/src/datast
LIBDIR=${RDMXCQDIR}/lib
BINDIR=${RDMXCQDIR}/bin

# ---------------------------------------------------------------------
# Compiler options 
# ---------------------------------------------------------------------

COMPILER= gcc 
COPT= -Wall -O3 -fomit-frame-pointer -funroll-loops

# ---------------------------------------------------------------------
# Entries
# ---------------------------------------------------------------------

heap: $(DTSDIR)/heap.c $(DTSDIR)/heap.h
	$(COMPILER) ${COPT} ${CFLAGS} -c $(DTSDIR)/heap.c -o $(LIBDIR)/heap.o

grinput: $(GPHDIR)/grinput.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -c $(GPHDIR)/grinput.c -o $(LIBDIR)/grinput$(NBITS).o

heurPartiteSubgraph: $(SRCDIR)/heurPartiteSubgraph.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) -c $(SRCDIR)/heurPartiteSubgraph.c -o $(LIBDIR)/heurPartiteSubgraph$(NBITS).o

heurColoring: $(SRCDIR)/heurColoring.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) -c $(SRCDIR)/heurColoring.c -o $(LIBDIR)/heurColoring$(NBITS).o

heurSelColoring: $(SRCDIR)/heurSelColoring.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) -c $(SRCDIR)/heurSelColoring.c -o $(LIBDIR)/heurSelColoring$(NBITS).o

mcr: $(SRCDIR)/mcr.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) -c $(SRCDIR)/mcr.c -o $(LIBDIR)/mcr$(NBITS).o

wheur: $(WSRCDIR)/heur.c $(GPHDIR)/bitmap.h $(GPHDIR)/graph.h
	$(COMPILER) ${COPT} ${CFLAGS} -I$(WSRCDIR) -c $(WSRCDIR)/heur.c -o $(LIBDIR)/wheur$(NBITS).o

################################################### 

mainrd: NBITS:=$(shell getconf LONG_BIT)
mainrd: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(NBITS)
mainrd: MAIN=rdmaxclique
mainrd: heap grinput heurPartiteSubgraph mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurPartiteSubgraph$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

mainbb: NBITS:=$(shell getconf LONG_BIT)
mainbb: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(NBITS)
mainbb: MAIN=bbmaxclique
mainbb: grinput heurColoring mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurColoring$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

mainpb: NBITS:=$(shell getconf LONG_BIT)
mainpb: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(NBITS)
mainpb: MAIN=pbmaxclique
mainpb: grinput heurSelColoring mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurSelColoring$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

################################################### SSE

mainrd_sse: NBITS:=128
mainrd_sse: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(shell getconf LONG_BIT) -msse4.1
mainrd_sse: MAIN=rdmaxclique
mainrd_sse: heap grinput heurPartiteSubgraph mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurPartiteSubgraph$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

mainbb_sse: NBITS:=128
mainbb_sse: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(shell getconf LONG_BIT) -msse4.1
mainbb_sse: MAIN=bbmaxclique
mainbb_sse: heap grinput heurColoring mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurColoring$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

mainpb_sse: NBITS:=128
mainpb_sse: CFLAGS = -D_ARCH$(NBITS)_ -I. -I$(GPHDIR) -I$(DTSDIR) -m$(shell getconf LONG_BIT) -msse4.1
mainpb_sse: MAIN=pbmaxclique
mainpb_sse: heap grinput heurSelColoring mcr
	$(COMPILER) ${COPT} ${CFLAGS} -I$(SRCDIR) $(LIBDIR)/heurSelColoring$(NBITS).o $(LIBDIR)/heap.o $(LIBDIR)/mcr$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(SRCDIR)/$(MAIN).c -o $(BINDIR)/$(MAIN)$(NBITS)

################################################### WEIGHTED

wmain: heap grinput wheur
	$(COMPILER) ${COPT} ${CFLAGS} -I$(WSRCDIR) $(LIBDIR)/wheur$(NBITS).o $(LIBDIR)/grinput$(NBITS).o $(WSRCDIR)/rdmaxclique.c -o $(BINDIR)/rdmaxwclique$(NBITS)

# ------------------------------------------------------------

clean:
	/bin/rm -rf $(LIBDIR)/*.o

 